home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / geos-archive / GEOS-D64 / GEOS Mega ASM (19xx)(-).d64 / megamac < prev    next >
Text File  |  2019-04-13  |  23KB  |  897 lines

  1. ; Makrodefinitionen
  2. ; Revision 23.05.94
  3.  
  4. ; **************************
  5. ; *                             *
  6. ; *  LoadB  Adresse, Wert        *
  7. ; *                             *
  8. ; *  legt Byte-Wert in Adresse ab  *
  9. ; *                             *
  10. ; **************************
  11.  
  12. :LoadB     m
  13.      lda     #@1
  14.      sta     @0
  15.      /
  16.  
  17. ; *************************************
  18. ; *                                   *
  19. ; *  LoadW  Adresse, Wert             *
  20. ; *                                   *
  21. ; *  legt Word-Wert in Adresse ab     *
  22. ; *                                   *
  23. ; *************************************
  24.  
  25. :LoadW     m
  26.      lda     #<@1
  27.      sta     @0
  28.      lda     #>@1
  29.      sta     @0+1
  30.      /
  31.  
  32.  
  33. ; *************************************
  34. ; *                                   *
  35. ; *  MoveB  QuellAdresse, Zieladresse *
  36. ; *                                   *
  37. ; *  Kopiert BYTEwert in Quelladresse *
  38. ; *  nach Zieladresse                 *
  39. ; *                                   *
  40. ; *  Quelle --> Ziel                  *
  41. ; *                                   *
  42. ; *************************************
  43.  
  44. :MoveB     m
  45.      lda     @0
  46.      sta     @1
  47.      /
  48.  
  49. ; *************************************
  50. ; *                                   *
  51. ; *  MoveW  QuellAdresse, Zieladresse *
  52. ; *                                   *
  53. ; *  Kopiert WORDwert in Quelladresse *
  54. ; *  nach Zieladresse                 *
  55. ; *                                   *
  56. ; *  Quelle --> Ziel                  *
  57. ; *                                   *
  58. ; *************************************
  59.  
  60. :MoveW     m
  61.      lda     @0
  62.      sta     @1
  63.      lda     @0+1
  64.      sta     @1+1
  65.      /
  66.  
  67. ; *************************************
  68. ; *                                   *
  69. ; *  add  Wert                        *
  70. ; *                                   *
  71. ; *  addiert BYTEWert zum Akku        *
  72. ; *                                   *
  73. ; *************************************
  74.  
  75. :add     m
  76.      clc
  77.      adc     #@0
  78.      /
  79.  
  80.  
  81. ; *************************************
  82. ; *                                   *
  83. ; *  adda  Adresse                    *
  84. ; *                                   *
  85. ; *  addiert Inhalt einer Adresse     *
  86. ; *  zum Akku                         *
  87. ; *                                   *
  88. ; *************************************
  89.  
  90. :adda     m
  91.      clc
  92.      adc     @0
  93.      /
  94.  
  95. ; *************************************
  96. ; *                                   *
  97. ; *  AddB  Adresse1, Adresse2         *
  98. ; *                                   *
  99. ; *  addiert Inhalt von Adresse1      *
  100. ; *  zum Inhalt von Adresse2          *
  101. ; *                                   *
  102. ; *  Wert2 = Wert1 + Wert2            *
  103. ; *                                   *
  104. ; *************************************
  105.  
  106. :AddB     m
  107.      clc
  108.      lda     @0
  109.      adc     @1
  110.      sta     @1
  111.      /
  112.  
  113. ; *************************************
  114. ; *                                   *
  115. ; *  AddW  Adresse1, Adresse2         *
  116. ; *                                   *
  117. ; *  addiert WORDInhalt von           *
  118. ; *  Adresse1 und Adresse1+1          *
  119. ; *  zum WORDInhalt von               *
  120. ; *  Adresse2 und Adresse2+1          *
  121. ; *                                   *
  122. ; *  Wert2 = Wert1 + Wert2            *
  123. ; *                                   *
  124. ; *************************************
  125.  
  126. :AddW     m
  127.      lda     @0
  128.      clc
  129.      adc     @1
  130.      sta     @1
  131.      lda     @0+1
  132.      adc     @1+1
  133.      sta     @1+1
  134.      /
  135.  
  136. ; *************************************
  137. ; *                                   *
  138. ; *  AddVB  Wert, Adresse             *
  139. ; *                                   *
  140. ; *  addiert BYTEWert zum             *
  141. ; *  Inhalt von Adresse               *
  142. ; *                                   *
  143. ; *************************************
  144.  
  145. :AddVB     m
  146.      lda     @1
  147.      clc
  148.      adc     #@0
  149.      sta     @1
  150.      /
  151.  
  152. ; *************************************
  153. ; *                                   *
  154. ; *  AddVW  Wert, Adresse             *
  155. ; *                                   *
  156. ; *  addiert WORDWert zum             *
  157. ; *  WORDInhalt von                   *
  158. ; *  Adresse und Adresse +1           *
  159. ; *                                   *
  160. ; *************************************
  161.  
  162. :AddVW     m
  163.      lda     #<@0
  164.      clc
  165.      adc     @1
  166.      sta     @1
  167.      lda     #>@0
  168.      adc     @1+1
  169.      sta     @1+1
  170.      /
  171.  
  172. ; *************************************
  173. ; *                                   *
  174. ; *  sub  Wert                         *
  175. ; *                                   *
  176. ; *  subtrahiert BYTEWert vom Akku    *
  177. ; *                                   *
  178. ; *************************************
  179.  
  180. :sub     m
  181.      sec
  182.      sbc     #@0
  183.      /
  184.  
  185. ; *************************************
  186. ; *                                   *
  187. ; *  suba  Adresse                     *
  188. ; *                                   *
  189. ; *  subtrahiert Inhalt einer Adresse *
  190. ; *  vom Akku                         *
  191. ; *                                   *
  192. ; *************************************
  193.  
  194. :suba     m
  195.      sec
  196.      sbc     @0
  197.      /
  198.  
  199. ; *************************************
  200. ; *                                   *
  201. ; *  SubB  Adresse1, Adresse2         *
  202. ; *                                   *
  203. ; *  subtrahiert Inhalt von Adresse2  *
  204. ; *  vom Inhalt von Adresse1          *
  205. ; *                                   *
  206. ; *  Wert2 = Wert2 - Wert1            *
  207. ; *                                   *
  208. ; *************************************
  209.  
  210. :SubB     m
  211.      sec
  212.      lda     @1
  213.      sbc     @0
  214.      sta     @1
  215.      /
  216.  
  217.  
  218. ; *************************************
  219. ; *                                   *
  220. ; *  SubW  Adresse1, Adresse2         *
  221. ; *                                   *
  222. ; *  subtrahiert WORDInhalt           *
  223. ; *  von Adresse2 und Adresse2+1      *
  224. ; *  vom WORDInhalt                   *
  225. ; *  von Adresse1 und Adresse1+1      *
  226. ; *                                   *
  227. ; *  Wert2 = Wert2 - Wert1            *
  228. ; *                                   *
  229. ; *************************************
  230.  
  231. :SubW     m
  232.      lda     @1
  233.      sec
  234.      sbc     @0
  235.      sta     @1
  236.      lda     @1+1
  237.      sbc     @0+1
  238.      sta     @1+1
  239.      /
  240.  
  241. ; *************************************
  242. ; *                                   *
  243. ; *  SubVB  Wert, Adresse             *
  244. ; *                                   *
  245. ; *  subtrahiert BYTEWert             *
  246. ; *  vom Inhalt von Adresse           *
  247. ; *                                   *
  248. ; *************************************
  249.  
  250. :SubVB     m
  251.      sec
  252.      lda     @1
  253.      sbc     #@0
  254.      sta     @1
  255.      /
  256.  
  257. ; *************************************
  258. ; *                                   *
  259. ; *  SubVW  Wert, Adresse             *
  260. ; *                                   *
  261. ; *  subtrahiert WORDIWert            *
  262. ; *  von Adresse1 und Adresse1+1      *
  263. ; *                                   *
  264. ; *************************************
  265.  
  266. :SubVW     m
  267.      lda     @1
  268.      sec
  269.      sbc     #<@0
  270.      sta     @1
  271.      lda     @1+1
  272.      sbc     #>@0
  273.      sta     @1+1
  274.      /
  275.  
  276. ; *************************************
  277. ; *                                   *
  278. ; *  CmpB  Adresse1, Adresse2         *
  279. ; *                                   *
  280. ; *  vergleicht Inhalt von Adresse1   *
  281. ; *  mit Inhalt von Adresse2          *
  282. ; *                                   *
  283. ; *************************************
  284.  
  285. :CmpB     m
  286.      lda     @0
  287.      cmp     @1
  288.      /
  289.  
  290. ; *************************************
  291. ; *                                   *
  292. ; *  CmpBI  Adresse, Wert             *
  293. ; *                                   *
  294. ; *  vergleicht Inhalt von Adresse    *
  295. ; *  mit Wert                         *
  296. ; *                                   *
  297. ; *************************************
  298.  
  299. :CmpBI     m
  300.      lda     @0
  301.      cmp     #@1
  302.      /
  303.  
  304.  
  305. ; *************************************
  306. ; *                                   *
  307. ; *  CmpW  Adresse1, Adresse2          *
  308. ; *                                   *
  309. ; *  vergleicht WORDInhalt            *
  310. ; *  von Adresse1 und Adresse1+1      *
  311. ; *  mit WORDInhalt                   *
  312. ; *  von Adresse2 und Adresse2+1      *
  313. ; *                                   *
  314. ; *************************************
  315.  
  316. :CmpW     m
  317.      lda     @0+1
  318.      cmp     @1+1
  319.      bne     :ende
  320.      lda     @0
  321.      cmp     @1
  322. ::ende
  323.      /
  324.  
  325.  
  326. ; *************************************
  327. ; *                                   *
  328. ; *  CmpWI  Adresse, WORD             *
  329. ; *                                   *
  330. ; *  vergleicht WORDInhalt            *
  331. ; *  von Adresse und Adresse+1        *
  332. ; *  mit WORDWert                     *
  333. ; *                                   *
  334. ; *************************************
  335.  
  336. :CmpWI     m
  337.      lda     @0+1
  338.      cmp     #>@1
  339.      bne     :ende1
  340.      lda     @0
  341.      cmp     #<@1
  342. ::ende1
  343.      /
  344.  
  345. ; *************************************
  346. ; *                                   *
  347. ; *  PushB  Adresse                   *
  348. ; *                                   *
  349. ; *  legt Inhalt von Adresse          *
  350. ; *  auf den Stack                    *
  351. ; *                                   *
  352. ; *************************************
  353.  
  354. :PushB     m
  355.      lda     @0
  356.      pha
  357.      /
  358.  
  359. ; *************************************
  360. ; *                                   *
  361. ; *  PushW  Adresse                   *
  362. ; *                                   *
  363. ; *  legt Inhalt von Adresse und      *
  364. ; *  Adresse+1 auf den Stack          *
  365. ; *                                   *
  366. ; *************************************
  367.  
  368. :PushW     m
  369.      lda     @0+1
  370.      pha
  371.      lda     @0
  372.      pha
  373.      /
  374.  
  375.  
  376. ; *************************************
  377. ; *                                   *
  378. ; *  PopB  Adresse                    *
  379. ; *                                   *
  380. ; *  holt BYTEWert vom Stack zur}ck   *
  381. ; *  und legt den Wert in Adresse ab  *
  382. ; *                                   *
  383. ; *************************************
  384.  
  385. :PopB     m
  386.      pla
  387.      sta     @0
  388.      /
  389.  
  390. ; *************************************
  391. ; *                                   *
  392. ; *  PopW  Adresse                    *
  393. ; *                                   *
  394. ; *  holt WORDWert vom Stack zur}ck   *
  395. ; *  und legt die Werte in Adresse    *
  396. ; *  und Adresse+1 ab                 *
  397. ; *                                   *
  398. ; *************************************
  399.  
  400. :PopW     m
  401.      pla
  402.      sta     @0
  403.      pla
  404.      sta     @0+1
  405.      /
  406.  
  407.  
  408. ; *************************************
  409. ; *                                   *
  410. ; *  bra  Adresse                     *
  411. ; *                                   *
  412. ; *  branch always                    *
  413. ; *                                   *
  414. ; *  verzweige immer zu Adresse       *
  415. ; *                                   *
  416. ; *************************************
  417.  
  418. :bra     m
  419.      clv
  420.      bvc     @0
  421.      /
  422.  
  423. ; *************************************
  424. ; *                                   *
  425. ; *  bge  Adresse                     *
  426. ; *                                   *
  427. ; *  branch if greater or equal       *
  428. ; *                                   *
  429. ; *  verzweige, wenn                  *
  430. ; *  gr|~er oder gleich               *
  431. ; *                                   *
  432. ; *************************************
  433.  
  434. :bge     m
  435.      bcs     @0
  436.      /
  437.  
  438. ; *************************************
  439. ; *                                   *
  440. ; *  bgt  Adresse                     *
  441. ; *                                   *
  442. ; *  branch if greater than           *
  443. ; *                                   *
  444. ; *  verzweige,wenn gr|~er            *
  445. ; *                                   *
  446. ; *************************************
  447.  
  448. :bgt     m
  449.      beq     :done
  450.      bcs     @0
  451. ::done
  452.      /
  453.  
  454.  
  455. ; *************************************
  456. ; *                                   *
  457. ; *  blt  Adresse                     *
  458. ; *                                   *
  459. ; *  branch if less than              *
  460. ; *                                   *
  461. ; *  verzweige, wenn kleiner          *
  462. ; *                                   *
  463. ; *************************************
  464.  
  465. :blt     m
  466.      bcc     @0
  467.      /
  468.  
  469.  
  470. ; *************************************
  471. ; *                                   *
  472. ; *  ble  Adresse                     *
  473. ; *                                   *
  474. ; *  branch if less or equal          *
  475. ; *                                   *
  476. ; *  verzweige, wenn                  *
  477. ; *  kleiner oder gleich              *
  478. ; *                                   *
  479. ; *************************************
  480.  
  481. :ble     m
  482.      beq     @0
  483.      bcc     @0
  484.      /
  485.  
  486.  
  487. ; *************************************
  488. ; *                                   *
  489. ; *  sbn  BITNummer                   *
  490. ; *                                   *
  491. ; *  setze Bit Nummer                 *
  492. ; *                                   *
  493. ; *  g}ltig sind nur                  *
  494. ; *  Bitwerte von 0 bis 7             *
  495. ; *                                   *
  496. ; *************************************
  497.  
  498. :sbn     m
  499.      ora     #2^@0
  500.      /
  501.  
  502.  
  503. ; *************************************
  504. ; *                                   *
  505. ; *  sbBn  Adresse, BITNummer         *
  506. ; *                                   *
  507. ; *  setze Bit Nummer in Adresse      *
  508. ; *                                   *
  509. ; *  g}ltig sind nur                  *
  510. ; *  Bitwerte von 0 bis 7             *
  511. ; *                                   *
  512. ; *************************************
  513.  
  514. :sbBn     m
  515.      lda     @0
  516.      ora     #2^@1
  517.      sta     @0
  518.      /
  519.  
  520.  
  521. ; *************************************
  522. ; *                                   *
  523. ; *  sbWn  Adresse, BITNummer         *
  524. ; *                                   *
  525. ; *  setze Bit Nummer in Adresse      *
  526. ; *  bzw. Adresse+1                   *
  527. ; *                                   *
  528. ; *  g}ltig sind nur                  *
  529. ; *  Bitwerte von 0 bis 15            *
  530. ; *                                   *
  531. ; *************************************
  532.  
  533. :sbWn     m
  534.      lda     @0
  535.      ora     #<2^@1
  536.      sta     @0
  537.      lda     @0+1
  538.      ora     #>2^@1
  539.      sta     @0+1
  540.      /
  541.  
  542. ; *************************************
  543. ; *                                   *
  544. ; *  cbn  BITNummer                   *
  545. ; *                                   *
  546. ; *  l|sche Bit Nummer                *
  547. ; *                                   *
  548. ; *  g}ltig sind nur                  *
  549. ; *  Bitwerte von 0 bis 7             *
  550. ; *                                   *
  551. ; *************************************
  552.  
  553. :cbn     m
  554.      and     #$ff-2^@0
  555.      /
  556.  
  557.  
  558. ; *************************************
  559. ; *                                   *
  560. ; *  cbBn  Adresse, BITNummer         *
  561. ; *                                   *
  562. ; *  l|sche Bit Nummer in Adresse     *
  563. ; *                                   *
  564. ; *  g}ltig sind nur                  *
  565. ; *  Bitwerte von 0 bis 7             *
  566. ; *                                   *
  567. ; *************************************
  568.  
  569. :cbBn     m
  570.      lda     @0
  571.      and     #$ff-2^@1
  572.      sta     @0
  573.      /
  574.  
  575.  
  576. ; *************************************
  577. ; *                                   *
  578. ; *  cbWn  Adresse, BITNummer         *
  579. ; *                                   *
  580. ; *  l|sche Bit Nummer in Adresse     *
  581. ; *  bzw. Adresse+1                   *
  582. ; *                                   *
  583. ; *  g}ltig sind nur                  *
  584. ; *  Bitwerte von 0 bis 15            *
  585. ; *                                   *
  586. ; *************************************
  587.  
  588. :cbWn     m
  589.      lda     @0
  590.      and     #<$ffff-2^@1
  591.      sta     @0
  592.      lda     @0+1
  593.      and     #>$ffff-2^@1
  594.      sta     @0+1
  595.      /
  596.  
  597. ; *************************************
  598. ; *                                   *
  599. ; *  roln  Anzahl                     *
  600. ; *                                   *
  601. ; *  rotiert Akku Anzahl-mal links    *
  602. ; *  unter Beachtung des              *
  603. ; *  Carry-Flags                      *
  604. ; *                                   *
  605. ; *  sinnvoll sind nur                *
  606. ; *  Bitwerte von 0 bis 8             *
  607. ; *  x-Register wird ver{ndert !      *
  608. ; *                                   *
  609. ; *************************************
  610.  
  611. :roln     m
  612.      ldx     #@0
  613.      beq     :done
  614. ::10     rol
  615.      dex
  616.      bne     :10
  617. ::done
  618.      /
  619.  
  620.  
  621. ; *************************************
  622. ; *                                   *
  623. ; *  rolBn  Adresse, Anzahl           *
  624. ; *                                   *
  625. ; *  rotiert Inhalt von Adresse       *
  626. ; *  Anzahl-mal links                 *
  627. ; *  unter Beachtung des              *
  628. ; *  Carry-Flags                      *
  629. ; *                                   *
  630. ; *  sinnvoll sind nur                *
  631. ; *  Bitwerte von 0 bis 8             *
  632. ; *  x-Register wird ver{ndert !      *
  633. ; *                                   *
  634. ; *************************************
  635.  
  636. :rolBn     m
  637.      ldx     #@1
  638.      beq     :done
  639. ::10     rol     @0
  640.      dex
  641.      bne     :10
  642. ::done
  643.      /
  644.  
  645.  
  646. ; *************************************
  647. ; *                                   *
  648. ; *  rolWn  Adresse, Anzahl           *
  649. ; *                                   *
  650. ; *  rotiert Inhalt von Adresse       *
  651. ; *  und Adresse+1                    *
  652. ; *  Anzahl-mal links                 *
  653. ; *  unter Beachtung des              *
  654. ; *  Carry-Flags                      *
  655. ; *                                   *
  656. ; *  sinnvoll sind nur                *
  657. ; *  Bitwerte von 0 bis 16            *
  658. ; *  x-Register wird ver{ndert !      *
  659. ; *                                   *
  660. ; *************************************
  661.  
  662. :rolWn     m
  663.      ldx     #@1
  664.      beq     :done
  665. ::10     rol     @0
  666.      rol     @0+1
  667.      dex
  668.      bne     :10
  669. ::done
  670.      /
  671.  
  672.  
  673. ; *************************************
  674. ; *                                   *
  675. ; *  rorn  Anzahl                     *
  676. ; *                                   *
  677. ; *  rotiert Akku Anzahl-mal rechts   *
  678. ; *  unter Beachtung des              *
  679. ; *  Carry-Flags                      *
  680. ; *                                   *
  681. ; *  sinnvoll sind nur                *
  682. ; *  Bitwerte von 0 bis 8             *
  683. ; *  x-Register wird ver{ndert !      *
  684. ; *                                   *
  685. ; *************************************
  686.  
  687. :rorn     m
  688.      ldx     #@0
  689.      beq     :done
  690. ::10     ror
  691.      dex
  692.      bne     :10
  693. ::done
  694.      /
  695.  
  696.  
  697. ; *************************************
  698. ; *                                   *
  699. ; *  rorBn  Adresse, Anzahl           *
  700. ; *                                   *
  701. ; *  rotiert Inhalt von Adresse       *
  702. ; *  Anzahl-mal rechts                *
  703. ; *  unter Beachtung des              *
  704. ; *  Carry-Flags                      *
  705. ; *                                   *
  706. ; *  sinnvoll sind nur                *
  707. ; *  Bitwerte von 0 bis 8             *
  708. ; *  x-Register wird ver{ndert !      *
  709. ; *                                   *
  710. ; *************************************
  711.  
  712. :rorBn     m
  713.      ldx     #@1
  714.      beq     :done
  715. ::10     ror     @0
  716.      dex
  717.      bne     :10
  718. ::done
  719.      /
  720.  
  721.  
  722. ; *************************************
  723. ; *                                   *
  724. ; *  rorWn  Adresse, Anzahl           *
  725. ; *                                   *
  726. ; *  rotiert Inhalt von Adresse       *
  727. ; *  und Adresse+1                    *
  728. ; *  Anzahl-mal rechts                *
  729. ; *  unter Beachtung des              *
  730. ; *  Carry-Flags                      *
  731. ; *                                   *
  732. ; *  sinnvoll sind nur                *
  733. ; *  Bitwerte von 0 bis 16            *
  734. ; *  x-Register wird ver{ndert !      *
  735. ; *                                   *
  736. ; *************************************
  737.  
  738. :rorWn     m
  739.      ldx     #@1
  740.      beq     :done
  741. ::10     ror     @0+1
  742.      ror     @0
  743.      dex
  744.      bne     :10
  745. ::done
  746.      /
  747.  
  748.  
  749. ; *************************************
  750. ; *                                   *
  751. ; *  asln  Anzahl                     *
  752. ; *                                   *
  753. ; *  verschiebt Akku Anzahl-mal       *
  754. ; *  links, entspricht der            *
  755. ; *  Multiplikation *2^n              *
  756. ; *                                   *
  757. ; *  sinnvoll sind nur                *
  758. ; *  Bitwerte von 0 bis 8             *
  759. ; *  x-Register wird ver{ndert !      *
  760. ; *                                   *
  761. ; *************************************
  762.  
  763. :asln     m
  764.      ldx     #@0
  765.      beq     :done
  766. ::10     asl
  767.      dex
  768.      bne     :10
  769. ::done
  770.      /
  771.  
  772.  
  773. ; *************************************
  774. ; *                                   *
  775. ; *  aslBn  Adresse, Anzahl           *
  776. ; *                                   *
  777. ; *  verschiebt Inhalt von Adresse    *
  778. ; *  Anzahl-mal links, entspricht der *
  779. ; *  Multiplikation *2^n              *
  780. ; *                                   *
  781. ; *  sinnvoll sind nur                *
  782. ; *  Bitwerte von 0 bis 8             *
  783. ; *  x-Register wird ver{ndert !      *
  784. ; *                                   *
  785. ; *************************************
  786.  
  787. :aslBn     m
  788.      ldx     #@1
  789.      beq     :done
  790. ::10     asl     @0
  791.      dex
  792.      bne     :10
  793. ::done
  794.      /
  795.  
  796.  
  797. ; *************************************
  798. ; *                                   *
  799. ; *  aslWn  Adresse, Anzahl           *
  800. ; *                                   *
  801. ; *  verschiebt Inhalt von Adresse    *
  802. ; *  und Adresse+1                    *
  803. ; *  Anzahl-mal links, entspricht der *
  804. ; *  Multiplikation *2^n              *
  805. ; *                                   *
  806. ; *  sinnvoll sind nur                *
  807. ; *  Bitwerte von 0 bis 16            *
  808. ; *  x-Register wird ver{ndert !      *
  809. ; *                                   *
  810. ; *************************************
  811.  
  812. :aslWn     m
  813.      ldx     #@1
  814.      beq     :done
  815. ::10     asl     @0
  816.      rol     @0+1
  817.      dex
  818.      bne     :10
  819. ::done
  820.      /
  821.  
  822.  
  823. ; *************************************
  824. ; *                                   *
  825. ; *  lsrn  Anzahl                     *
  826. ; *                                   *
  827. ; *  verschiebt Akku Anzahl-mal       *
  828. ; *  rechts, entspricht der           *
  829. ; *  Division /2^n                    *
  830. ; *                                   *
  831. ; *  sinnvoll sind nur                *
  832. ; *  Bitwerte von 0 bis 8             *
  833. ; *  x-Register wird ver{ndert !      *
  834. ; *                                   *
  835. ; *************************************
  836.  
  837. :lsrn     m
  838.      ldx     #@0
  839.      beq     :done
  840. ::10     lsr
  841.      dex
  842.      bne     :10
  843. ::done
  844.      /
  845.  
  846.  
  847. ; *************************************
  848. ; *                                   *
  849. ; *  lsrBn  Adresse, Anzahl           *
  850. ; *                                   *
  851. ; *  verschiebt Inhalt von Adresse    *
  852. ; *  Anzahl-mal rechts, entspricht    *
  853. ; *  der Division /2^n                *
  854. ; *                                   *
  855. ; *  sinnvoll sind nur                *
  856. ; *  Bitwerte von 0 bis 8             *
  857. ; *  x-Register wird ver{ndert !      *
  858. ; *                                   *
  859. ; *************************************
  860.  
  861. :lsrBn     m
  862.      ldx     #@1
  863.      beq     :done
  864. ::10     lsr     @0
  865.      dex
  866.      bne     :10
  867. ::done
  868.      /
  869.  
  870.  
  871. ; *************************************
  872. ; *                                   *
  873. ; *  lsrWn  Adresse, Anzahl           *
  874. ; *                                   *
  875. ; *  verschiebt Inhalt von Adresse    *
  876. ; *  und Adresse+1                    *
  877. ; *  Anzahl-mal rechts, entspricht    *
  878. ; *  der Division /2^n                *
  879. ; *                                   *
  880. ; *  sinnvoll sind nur                *
  881. ; *  Bitwerte von 0 bis 16            *
  882. ; *  x-Register wird ver{ndert !      *
  883. ; *                                   *
  884. ; *************************************
  885.  
  886. :lsrWn     m
  887.      ldx     #@1
  888.      beq     :done
  889. ::10     lsr     @0+1
  890.      ror     @0
  891.      dex
  892.      bne     :10
  893. ::done
  894.      /
  895.  
  896.